package com.gdust.hzx.feign.cart;

import com.gdust.hzx.model.entity.h5.CartInfo;
import com.gdust.hzx.model.vo.common.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.List;

/**
 * ClassName: CartFeignClient
 * Package: com.gdust.hzx.feign.cart
 * Description: 远程调用模块，用于与服务端的购物车模块进行交互。
 *
 * 该接口定义了与服务端购物车服务之间的远程调用方法。通过 FeignClient，能够简化服务间的 HTTP 请求，进行购物车相关的操作。
 * 主要用于删除选中商品以及获取所有选中商品。
 *
 * @Author syun
 * @Create 2024/12/27 14:53
 * @Version 1.0
 */
@FeignClient(value = "service-cart")  // FeignClient 注解标明这是一个远程调用接口，远程服务名为 "service-cart"
public interface CartFeignClient {

    /**
     * 删除购物车中所有选中的商品
     *
     * 在service-cart-client模块CartFeignClient中定义删除选中的购物车数据的远程接口方法：
     * 该方法用于远程调用服务端的购物车模块，删除用户购物车中所有已选中的商品。
     *
     * @return 返回操作结果，包含状态码和信息。
     */
    @GetMapping("/api/order/cart/auth/deleteChecked")  // 使用 GET 请求方式调用远程服务删除选中商品
    public Result deleteChecked();

    /**
     * 获取所有选中的购物车商品
     *
     * 该方法用于远程调用服务端获取用户购物车中所有选中的商品信息。
     *
     * @return 返回选中商品的列表，包含商品的详细信息。
     */
    @GetMapping(value = "/api/order/cart/auth/getAllChecked")  // 使用 GET 请求方式调用远程服务获取选中商品
    public List<CartInfo> getAllChecked();  // 返回类型为 List<CartInfo>，包含所有选中商品的详细信息
}
